Fullstack-Study

1. Java & Spring

<1> Java 기본 & OOP

(1) Java

  1. 개발자가 .java파일 작성
  2. javac 컴파일러가 코드 분석
  • 문법체크, 타입 검사 등
  1. .class 파일(바이트코드) 생성
  • CPU/OS에 종속적이지 않은(독립적) 중간 언어
  • JVM이 읽을 수 있는 명령어 집합
  • Java코드는 바이트코드(.class)컴파일
  • JVM이 OS와 CPU환경에 맞게 기계어로 변환
  • JIT(Just-In-Time) Complier 사용 -> 성능 향상
  • InterPreter : 한 줄씩 실행 -> 느림
  • JIT Compiler : Host Spot 코드 -> 기계어 최적화 -> 빠름
  • Just-In-Time 컴파일러
  • 반복 실행되는 Hot Spot 코드를 런타임에 기계어로 변환
  • Hot Spot 코드 = 프로그램 실행 중 자주 반복해서 실행되는 코드
  • 성능 최적화 : 인라인, 루프 최적화, 레지스터 활용
  • Method Area : 클래스별 정보와 메서드 코드, 상수 static변수 등을 저장
  • Stack : 메서드 호출, 지역변수 관리
  • Heap : 객체 저장
  • PC Register : 현재 실행 위치 추적
  • Native Method Stack : 네이티브 코드 호출
  1. GC정의
  1. GC 동작 방식
  1. Mark & Sweep
  • Mark : 도달 가능한 객체 표시
  • Sweep : 표시되지 않은 객체 제거
  1. Generational GC
  • 객체의 생존 기간에 따라 영역 분리
  • Young Generation : 새로 생성된 객체로 Minor GC 발생
  • Old Generation : 오래 살아남은 객체로 Major GC 발생
  • 새로 생성된 객체 대부분 금방 사라지므로, Young 영역만 자주 GC가 발생하여 효율적임
  1. GC Algorithm
  • Serial GC : 단일 스레드, 작은 앱에 적합
  • Parallel GC : 멀티스레드, CPU 활용 -> 서버 환경
  • Concurrent Mark Sweep (CMS) : 애플리케이션과 동시에 GC 수행
  • G1 GC : 영역 기반, 대규모 Heap에 최적화, Predictable pause time
  1. GC 특징
  1. 효율적 관리

(2) OOP (객체지향 프로그래밍)